home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / parcs / parcs.lha / sample / parse.parcs < prev    next >
Text File  |  1992-06-08  |  1KB  |  56 lines

  1. #priority vp(0.5,0,0) 0
  2. #priority np(0.5,0,0) 0
  3. #priority pp(0.3,0,0) 0
  4.  
  5. analyze(X,Z) :- lex(X,Y),parse(Y,Z).
  6. sanalyze(X,Z) :- lex(X,Y);parse(Y,Z)./* sequential version of analyze */
  7.  
  8. lex([],[]).
  9. lex([t,o|X],[to|Y]) :- lex(X,Y).
  10. lex([t,h,i,s|X],[this|Y]) :- lex(X,Y).
  11. lex([h,e|X],[he|Y]) :- lex(X,Y).
  12. lex([k,e,n|X],[ken|Y]) :- lex(X,Y).
  13. lex([p,e,n|X],[pen|Y]) :- lex(X,Y).
  14. lex([m,a,n|X],[man|Y]) :- lex(X,Y).
  15. lex([w,i,t,h|X],[with|Y]) :- lex(X,Y).
  16. lex([a|X],[a|Y]) :- lex(X,Y).
  17. lex([t,h,e|X],[the|Y]) :- lex(X,Y).
  18. lex([i,s|X],[is|Y]) :- lex(X,Y).
  19. lex([h,a,s|X],[has|Y]) :- lex(X,Y).
  20.  
  21. parse(Sentence,Ptree) :- s(Sentence,[],Ptree).
  22.  
  23. s(X,Y,s(NP,VP)) :- np(X,Z,NP),vp(Z,Y,VP).
  24.  
  25. vp(X,Y,vp(V)) :- v(X,Y,V).
  26. vp(X,Y,vp(V,NP)) :- v(X,Z,V),np(Z,Y,NP).
  27. vp(X,Y,vp(VP,PP)) :- vp(X,Z,VP),pp(Z,Y,PP).
  28.  
  29. np(X,Y,np(N)) :- n(X,Y,N).
  30. np(X,Y,np(D,NP)) :- d(X,Z,D),np(Z,Y,NP).
  31. np(X,Y,np(A,NP)) :- a(X,Z,A),np(Z,Y,NP).
  32. np(X,Y,np(NP,PP)) :- np(X,Z,NP),pp(Z,Y,PP).
  33.  
  34. pp(X,Y,pp(P,NP)) :- p(X,Z,P),np(Z,Y,NP).
  35.  
  36. n([he|X],X,n(he)).
  37. n([this|X],X,n(this)).
  38. n([pen|X],X,n(pen)).
  39. np([ken|X],X,np(ken)).
  40. n([man|X],X,n(man)).
  41.  
  42. v([is|X],X,v(is)).
  43. v([has|X],X,v(has)).
  44.  
  45. a([black|X],X,a(black)).
  46. a([this|X],X,a(this)).
  47.  
  48. p([with|X],X,p(with)).
  49. p([to|X],X,p(to)).
  50.  
  51. d([a|X],X,d(a)).
  52. d([the|X],X,d(the)).
  53.  
  54. /*
  55. :-analyze([t,X,i,s,i,s,a,Y,e,n],Z).
  56. */